import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Scanner;


public class ParserLogic {

    public static byte[] parseFiles(String key, String path) throws IOException {
        //массив байтов, который будем возвращать
        byte[] readData = null;

        //проходим по всем файлам в папке (список возвращает getFileList)
        for (String searchpath : FilesystemHandler.getFileList(path)) {

            //формируем полное имя файла и кидаем в функцию, осуществляющую поиск
            readData = ParserLogic.readSequence(key, path + "\\" + searchpath);

            //если есть данные, цикл прерываем
            if (readData != null)
                break;
        }
        //возвращаем искомый архив
        return readData;
    }

    private static byte[] readSequence(String key, String path) throws IOException {

        byte[] Buffer = null; //возвращаемый буфер
        char[] charArray = null; //временный массив чаров
        ArrayList<Byte> byteList = new ArrayList<Byte>(); //временный список для байтов
        String line;
        int offset = 0;
        File currentFile = new File(path);
        Scanner fileScanner = new Scanner(currentFile);
        while (fileScanner.hasNext()) {

            //System.out.println(fileScanner.nextLine());
            line = fileScanner.nextLine(); //читаем строку из файла

            if (line.contains("===" + key + "===")) { //если есть ключ...
                line = fileScanner.nextLine(); //след. строка
                while (line.length() > 2 && line.charAt(0) != '=' && line.charAt(1) != '=' && line.charAt(2) != '='
                        || line.length() < 3) { //проверка на коммент в начале строки
                    System.out.println(line);
                    charArray = line.toCharArray(); //преобразование прочитанной строки в массив чаров и
                    for (char c : charArray) {

                        byteList.add((byte) c); //добавляем в список чары из строки
                    }
                    if (fileScanner.hasNext()) { //если есть еще строки, читаем, иначе выход из цикла
                        line = fileScanner.nextLine();
                    } else break;
                }
            }
        }
        if (byteList.size() > 0) { //если чего-то начитали, преобразуем список в архив
            Buffer = new byte[byteList.size()];
            for (Byte b : byteList) {

                Buffer[offset] = b.byteValue();
                offset++;
            }
        }
        return Buffer; //архив байтов, если ключ найден, или null если не найден
    }
}

